package com.ruoyi.service.project.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.service.project.entity.ProjectEntity;
import com.ruoyi.service.project.query.InvoiceQuery;
import com.ruoyi.service.project.query.ProjectQueryForDemander;
import com.ruoyi.service.project.query.ProjectQueryForLabor;
import com.ruoyi.service.project.query.ProjectQueryForPlatform;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 项目信息表 服务类
 * </p>
 *
 * @author Zane
 * @since 2025-10-11
 */
public interface ProjectService extends IService<ProjectEntity> {

  List<ProjectEntity> listForDemander(ProjectQueryForDemander query, Long companyId);

  List<ProjectEntity> listForLabor(ProjectQueryForLabor query);

  List<ProjectEntity> listForPlatform(ProjectQueryForPlatform query);

  List<ProjectEntity> publishAndNeedStart();

  List<ProjectEntity> delayNotifyList();

  Long countForCooperation(Long userId);

  Long getDemanderVerifyCount(Long userId);

  Long getDemanderExecutionCount(Long userId);

  Long getProjectCount();

  Long getExecutionCount();

  List<ProjectEntity> listForInvoice(InvoiceQuery query);

  List<ProjectEntity> demanderListForCooperation(ProjectQueryForDemander projectQuery, Long userId);

  List<ProjectEntity> demanderListForVery(ProjectQueryForDemander projectQuery, Long userId);

  List<ProjectEntity> demanderListForExecution(ProjectQueryForDemander projectQuery, Long userId);

  Long projectDemanderSuddenCount(Long userId);

  List<ProjectEntity> demanderListForSudden(ProjectQueryForDemander projectQuery, Long userId);

  Map<String,ProjectEntity> selectMapByIds(List<String> projectIds);

  List<ProjectEntity> laborListForFinish(ProjectQueryForDemander projectQuery, Long userId);

  List<ProjectEntity> laborListForApply(ProjectQueryForDemander projectQuery, Long userId);

  List<ProjectEntity> laborListForExecution(ProjectQueryForDemander projectQuery, Long userId);
}
